19.2 リアルタイム GC のスケジューリング
スケジューリング技法は様々存在
仕事ベーススケジューリング
コレクタの処理を、単位量ごとのミューテータの処理に対する課税とみなす
Baker のインクリメンタル二分空間コピーGCとか(19.3 を先読み)
Lisp の cons セルのサイズが全部同じことを仮定
リードバリアで from 空間に触れたら即 to 空間にコピーする
オブジェクトサイズが全部固定なので有界
ミューテータの alloc 処理ごとに、ある限られた分量のコレクタ処理を行う
こうした状況下ではコレクタの時間的・空間的上界を厳密に求められたりする
あくまでこれは一例である
余裕ベーススケジューリング
コレクタの処理をリアルタイムシステムのタスクスケジューリングにおける余裕部分で実行
余裕部分=リアルタイムタスクが実行していない時
リアルタイムタスクの占める割合が小さかったり、周期的に発生する場合に向いている
優先度スケジューリングを用いるシステムでも、コレクタの優先度をリアルタイムタスクより小さく設定しておけば、余裕ベーススケジューリングを実現できる
時間ベーススケジューリング
実行時間のうち、予め定めた割合をコレクタの処理専用に予約し、その間ミューテータを停止
最小ミューテータ使用率が容易に保証できる
以降の章で、これらの技法について詳細に見ていく